package com.tmxk.jdbc02.test;

import com.tmxk.jdbc02.dao.EmpDao;
import com.tmxk.jdbc02.dao.SalGradeDao;
import com.tmxk.jdbc02.dao.impl.EmpDaoImpl;
import com.tmxk.jdbc02.dao.impl.SalGradeDaoImpl;
import com.tmxk.jdbc02.entity.SalGrade;
import com.tmxk.jdbc02.vo.DeptEmpVO;
import com.tmxk.jdbc02.vo.SalGradeVO;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SalGradeTest_01 {
    public static void main(String[] args) {
        // 多态体现
        SalGradeDao salGradeDao = new SalGradeDaoImpl();
        // 多态体现,实例化EmpDaoImpl实现类型
        EmpDao empDao = new EmpDaoImpl();
        // 获取所有的雇员编号
        List<DeptEmpVO> empVOList = empDao.queryDeptEmpByInfo(null);
        // 获取所有的薪资等级
        List<SalGrade> salGrades = salGradeDao.queryAllSalGrade();

        // 创建Map集合对象,用来存储雇员编号(key)和雇员薪资(sal)
        Map<Integer,DeptEmpVO> mapEmp = new HashMap<>();
        // 循环遍历雇员信息
        for (int i = 0; i <empVOList.size() ; i++) {
            // 雇员信息
            DeptEmpVO de = empVOList.get(i);
            // 雇员编号
            int empNo = de.getEmpNo();
            mapEmp.put(empNo,de);
        }

        //循环遍历薪资等级信息
        for(DeptEmpVO de : mapEmp.values()){
            for (int i = 0; i < salGrades.size(); i++) {
                //薪资对象
                SalGrade sg = salGrades.get(i);
                if (de.getSal() >= sg.getLosal() && de.getSal() <= sg.getHisal()) {
                    de.setGrade(sg.getGrade());
                }
            }
        }

        // 询Emp表的雇员信息 对应工资等级
        System.out.println("\n查询Emp表的雇员信息 对应工资等级");
        System.out.println("雇员编号\t雇员姓名\t薪资\t\t薪资等级");
        mapEmp.values().forEach(m->{
            System.out.println(m.getEmpNo()+"\t"+m.geteName()+"\t"+m.getSal()+"\t\t"+m.getGrade());
        });
    }
}
